package com.yami.shop.personnft.common.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yami.shop.bean.model.PersonNftApply;
import com.yami.shop.bean.vo.DawToVo;
import com.yami.shop.common.bean.PageDTO;
import com.yami.shop.common.bean.PageVO;
import com.yami.shop.common.util.PageParam;
import com.yami.shop.personnft.common.model.TransferApplyRecord;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface PersonNftApplyService {
	/**
	 * 获取列表
	 *
	 * @param
	 * @return 列表
	 */
	List<PersonNftApply> listByParam(@Param("personNftApply") PersonNftApply personNftApply);

	/**
	 * 保存
	 *
	 * @param 信息
	 */
	void save(@Param("personNftApply") PersonNftApply personNftApply);

	/**
	 * 	划转申请
	 */
	String saveTransferHwjApplyBatch(@Param("personNftApply")PersonNftApply personNftApply);

	IPage<PersonNftApply> page(PageParam pageDTO, PersonNftApply personNftApply);
	/**
	 * 	转增申请
	 */
	String saveTransferApply(@Param("personNftApply") PersonNftApply personNftApply);

	PersonNftApply getinfoById(@Param("id") String id);

	void update(@Param("personNftApply") PersonNftApply personNftApply);
	void updateByDownApplyId(@Param("personNftApply") PersonNftApply personNftApply);
	/**
	 * 转增接受
	 * @param id
	 */
	void updateTransferApply(PersonNftApply personNftApply);

	/**
	 * 转增过期处理
	 */
	void refundThansferPersonnft();

	/**
	 * 下游资产转移到账检测
	 */
	void changeCeceiptApplyNft();



	/**
	 * 划转申请审核
	 * @param id 1 成功 2 驳回
	 * @param status
	 * @param remark
	 */
	void changeCeceiptApply(@Param("id") String id, @Param("status") String status, @Param("remark") String remark);

	// 推送海文交定时器
	void taskChekSendDataNfts();
	//划转推送
	void sendAndDeletePersonNfts(@Param("batchId") Long batchId);
	//定时查询异常的结果
	void taskChekSendDataResult();
	//删除持仓 --批次结果校验成功后删除该申请下所有批次持仓
	void chenAllBachIdDataResult(List<String> applyIds);
	//最终推送比例
	String getLastSendData(@Param("id") String id);
	//交收   定时处理增加持仓
	void taskAddPersonVerifyNft();
	//提现修改申请表和推送记录表
	void verifyUpdateStaus(String applyId, TransferApplyRecord record, String type, String msg);

	//资产转移检查 百分比
	String getCheckNftData(@Param("id") String id);
	/**
	 * 导出同意准备参数
	 * @param id
	 */
	List<DawToVo> getTransferPersonNftByApplyId(@Param("id") Long id);
}
